/*
 FileReader共有4种读取方法：
 1.readAsArrayBuffer(file)：将文件读取为ArrayBuffer。
 2.readAsBinaryString(file)：将文件读取为二进制字符串
 3.readAsDataURL(file)：将文件读取为Data URL
 4.readAsText(file, [encoding])：将文件读取为文本，encoding缺省值为'UTF-8'
 */
var wb;//读取完成的数据
var rABS = false; //是否将文件读取为二进制字符串
$(document).ready(function() {
    $("#downloadFile").click(function() {
        downloadExl(jsono);
    });
});
function importf() {//导入
    // downloadExl(jsono);
    // return;
    if(!this.files || this.files.length<=0) {
        return;
    }

    if (this.files[0].name.indexOf(".xls")<0){
        window.top.window.showModalAlert("导入文件不是excel");
        return;
    }

    if (window.top.window.$("#storIdNew").val()==null || window.top.window.$("#storIdNew").val()==undefined || window.top.window.$("#storIdNew").val()==""){
        window.top.window.showModalAlert("请选择仓库");
        // window.top.window.$("upload-file").val("");
        file = window.top.window.$("#upload-file");
        file.after(file.clone().val(""));
        file.remove();
        window.top.window.$("#upload-file").unbind("change").bind("change", importf);
        return;
    }

    var f = this.files[0];
    var reader = new FileReader();
    reader.onload = function(e) {
        var data = e.target.result;
        if(rABS) {
            wb = XLSX.read(btoa(fixdata(data)), {//手动转化
                type: 'base64'
            });
        } else {
            wb = XLSX.read(data, {
                type: 'binary'
            });
        }
        //wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
        //wb.Sheets[Sheet名]获取第一个Sheet的数据
        var json = (JSON.stringify( XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])));
        // alert(Object.keys(mapAdjustSku).length);
        var mapAdjustSkuJson = "";
        if (Object.keys(mapAdjustSku).length>0){
            mapAdjustSkuJson = JSON.stringify(mapAdjustSku);
        }
        $.ajax({
            type : "POST",
            url : "/extAdjust/importFile.action",
            data : {"json": json,"storIdNew":window.top.window.$("#storIdNew").val(),"mapAdjustSku":mapAdjustSkuJson},
            // contentType : "application/json;charset=utf-8",
            // dataType : "json",
            async : false, // 同步
            success : function(data) {
                if (data.result == "success") {
                    if (data.errorJson != "" && data.errorJson != undefined && data.errorJson != null){
                        var jsonExcel = {};
                        var listJson = new Array();
                        $.each(data.errorJson, function (n, value) {
                            jsonExcel = {
                                "错误信息":value.错误信息,
                                "规格商家编码":value.规格商家编码,
                                "库存类型":value.库存类型,
                                "调整数":value.调整数,
                                "批次编号":value.批次编号,
                                "生产日期":value.生产日期,
                                "备注":value.备注
                            }
                            listJson.push(jsonExcel);
                        });
                        jsono = JSON.parse(JSON.stringify(listJson));


                        window.top.window.returnCustomModalDialog();
                        var editDialog = window.top.window.borrowCustomModalDialog($("#modalDownFile"));
                        editDialog.modal({show:true, backdrop:'static'});

                    } else {
                        $.each(data.json, function (n, value) {
                            adjustTableUpdate.fnAddData([ value.goodsCode, value.goodsName, value.skuCode, value.skuName, value.stockType, value.batchCode, value.productDate, value.qty, value.remark,
                                '<a href="javascript:;" class="delete" adjustSkuId="" dataKind="MT" fileName="">删除</a>' ]);
                            window.top.window.$("#adjustTableUpdate tbody tr:eq("+skuIdex+")").find("td").each(function () {
                                $(this).attr("title",$(this).text());
                            });

                            var batchCode = "";
                            var productDate = "";
                            if (value.batchCode!=null && value.batchCode!=undefined && value.batchCode!=""){
                                batchCode = value.batchCode;
                            }
                            if (value.productDate!=null && value.productDate!=undefined && value.productDate!=""){
                                productDate = value.productDate;
                            }
                            var myId = value.skuCode + "-" + value.stockType + "-" + batchCode + "-" + productDate;
                            mapAdjustSku[myId] = myId;
                            skuIdex++;
                        });
                        file = window.top.window.$("#upload-file");
                        file.after(file.clone().val(""));
                        file.remove();
                        window.top.window.$("#upload-file").unbind("change").bind("change", importf);
                        window.top.window.showModalAlert("商品信息导入成功");
                    }
                } else {
                    window.top.window.showModalAlert(data.msg);
                }
            },
            error : function(XMLHttpRequest, textStatus) {
                if (XMLHttpRequest.status == 500) {
                    var result = eval("(" + XMLHttpRequest.responseText + ")");
                    alert(result.errorObject.errorText);
                }
            }
        });

    };
    if(rABS) {
        reader.readAsArrayBuffer(f);
    } else {
        reader.readAsBinaryString(f);
    }
}

function fixdata(data) { //文件流转BinaryString
    var o = "",
        l = 0,
        w = 10240;
    for(; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
    o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
    return o;
}








// //如果使用 FileSaver.js 就不要同时使用以下函数
// function saveAs(obj, fileName) {//当然可以自定义简单的下载文件实现方式
//     var tmpa = document.createElement("a");
//     tmpa.download = fileName || "下载";
//     tmpa.href = URL.createObjectURL(obj); //绑定a标签
//     tmpa.click(); //模拟点击实现下载
//     setTimeout(function () { //延时释放
//         URL.revokeObjectURL(obj); //用URL.revokeObjectURL()来释放这个object URL
//     }, 100);
// }
var jsono = "";
// var jsono1 =
//     [{ //测试数据
//     "保质期临期预警(天)": "中国字",
//     "商品标题": "title",
//     "建议零售价": "defaultPrice",
//     "高(cm)": "height",
//     "商品描述": "Description",
//     "保质期禁售(天)": "lockupLifecycle",
//     "商品名称": "skuName",
//     "商品简介": "brief",
//     "宽(cm)": "width",
//     "阿达": "asdz",
//     "货号": "goodsNo",
//     "商品条码": "skuNo",
//     "商品品牌": "brand",
//     "净容积(cm^3)": "netVolume",
//     "是否保质期管理": "isShelfLifeMgmt",
//     "是否串号管理": "isSNMgmt",
//     "商品颜色": "color",
//     "尺码": "size",
//     "是否批次管理": "isBatchMgmt",
//     "商品编号": "skuCode",
//     "商品简称": "shortName",
//     "毛重(g)": "grossWeight",
//     "长(cm)": "length",
//     "英文名称": "englishName",
//     "净重(g)": "netWeight",
//     "商品分类": "categoryId",
//     "这里超过了": 1111.0,
//     "保质期(天)": "expDate"
// },{ //测试数据
//     "保质期临期预警(天)": "中国字",
//     "商品标题": "title",
//     "建议零售价": "defaultPrice",
//     "高(cm)": "height",
//     "商品描述": "Description",
//     "保质期禁售(天)": "lockupLifecycle",
//     "商品名称": "skuName",
//     "商品简介": "brief",
//     "宽(cm)": "width",
//     "阿达": "asdz",
//     "货号": "goodsNo",
//     "商品条码": "skuNo",
//     "商品品牌": "brand",
//     "净容积(cm^3)": "netVolume",
//     "是否保质期管理": "isShelfLifeMgmt",
//     "是否串号管理": "isSNMgmt",
//     "商品颜色": "color",
//     "尺码": "size",
//     "是否批次管理": "isBatchMgmt",
//     "商品编号": "skuCode",
//     "商品简称": "shortName",
//     "毛重(g)": "grossWeight",
//     "长(cm)": "length",
//     "英文名称": "englishName",
//     "净重(g)": "netWeight",
//     "商品分类": "categoryId",
//     "这里超过了": 1111.0,
//     "保质期(天)": "expDate"
// }];
// const wopts = { bookType: 'xlsx', bookSST: false, type: 'binary' };//这里的数据是用来定义导出的格式类型
// const wopts = { bookType: 'csv', bookSST: false, type: 'binary' };//ods格式
// const wopts = { bookType: 'ods', bookSST: false, type: 'binary' };//ods格式
// const wopts = { bookType: 'xlsb', bookSST: false, type: 'binary' };//xlsb格式
// const wopts = { bookType: 'fods', bookSST: false, type: 'binary' };//fods格式
// const wopts = { bookType: 'biff2', bookSST: false, type: 'binary' };//xls格式

function downloadExl(data) {
    var filename = "调整单错误数据.xlsx";
    var ws_name = "调整单错误数据";
    var data1 = [[1,2,3],[true, false, null, "sheetjs"],["foo","bar",new Date("2014-02-19T14:30Z"), "0.3"], ["baz", null, "qux"]]
    var wb1 = XLSX.utils.book_new();
    var ws = XLSX.utils.json_to_sheet(data);
    XLSX.utils.book_append_sheet(wb1, ws, ws_name);
    XLSX.writeFile(wb1, filename);

    // const wb = { SheetNames: ['Sheet1'], Sheets: {}, Props: {} };
    // wb.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(data);//通过json_to_sheet转成单页(Sheet)数据
    // var wbOut = XLSX.write(wb, wopts)
    // saveAs(new Blob([s2ab(wbOut)], { type: "application/octet-stream" }), "调整单错误数据" + '.' + (wopts.bookType=="biff2"?"xls":wopts.bookType));
}
// function s2ab(s) {
//     if (typeof ArrayBuffer !== 'undefined') {
//         var buf = new ArrayBuffer(s.length);
//         var view = new Uint8Array(buf);
//         for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
//         return buf;
//     } else {
//         var buf = new Array(s.length);
//         for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
//         return buf;
//     }
// }
